package com.junsi.system.service;

import java.util.List;

import com.junsi.common.core.domain.AjaxResult;
import com.junsi.common.core.domain.Ztree;
import com.junsi.system.domain.SysArea;
import com.junsi.system.vo.SysAreaCity;

/**
 * 地区 服务层
 * 
 * @author ymx
 * @date 2019-05-29
 */
public interface ISysAreaService 
{
	/**
     * 查询地区信息
     * @param areaCode 地区ID
     * @return 地区信息
     */
	public SysArea selectAreaById(String areaCode);
	
	/**
	 * 查询地区信息
	 * @param areaCode 地区ID
	 * @return 地区信息
	 */
	public List<SysArea> selectAreaByIds(String areaCode);

	/**
	 * 查询地区管理树
	 *
	 * @param sysArea 地区信息
	 * @return 所有地区信息
	 */
	List<Ztree> selectAreaTree(SysArea sysArea);


	/**
	 * 查询地区信息
	 * @param areaCode 父级ID
	 * @return 地区信息
	 */
	public List<SysAreaCity> selectAreaAndCity(String areaCode);
	
	/**
	 * 查询地区信息
	 * @param areaCode 父级ID
	 * @return 地区信息
	 */
	public List<SysArea> selectAreaByPar(String areaCode);
	
	/**
     * 查询地区列表
     * @param area 地区信息
     * @return 地区集合
     */
	public List<SysArea> selectAreaList(SysArea area);
	
	/**
	 * 查询地区列表
	 * @param area 地区信息
	 * @return 地区集合
	 */
	public List<SysArea> selectList(String areaCode);
	
	/**
	 * 查询区域列表
	 * @return 区域集合
	 */
	public List<SysArea> selectAreaLeve2();
	
	/**
     * 新增地区
     * @param area 地区信息
     * @return 结果
     */
	public int insertArea(SysArea area);
	
	/**
	 * 新增区域城市关联
	 * @param areaCode 区域code
	 * @param cityCode 城市code
	 * @return 结果
	 */
	public int insertAreaCity(SysAreaCity areaCity);
	
	/**
     * 修改地区
     * 
     * @param area 地区信息
     * @return 结果
     */
	public int updateArea(SysArea area);
		
	/**
     * 删除地区信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteAreaByIds(String ids);
	
	/**
	 * 删除地区信息
	 * 
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteById(String ids) throws Exception;

	/**
	 * 查询区域列表
	 * @param code 区域编码
	 * @return 区域集合
	 */
	public List<SysArea> leve3(List<SysArea> dataList, String code);

	/**
	 * 新增保存
	 * @param areaCode 区域编码 
	 * @param area 组织对象
	 * @return 结果
	 */
	public AjaxResult addSave(String areaCode, SysArea area);

}
